local Attr = require("role.Proto").Attr
local RoleBase = require("role.Proto").RoleBase 
local ItemData = require("bag.Proto").ItemData
local HeroSimple = require("hero.Proto").HeroSimple
local MoshouSkill = require("moshou.Proto").MoshouSkill

CG_COMBAT_POS_QUERY = {
	{"type",	1,		"byte"},--阵容类型
	{"groupID",	1,		"byte"},--0 查询某个战斗类型，type为阵容类型 ，不等于0，查询某个组
    {"param",	1,		"string"},--0 查询参数
}

--上阵英雄战力
CombatHeroZdl={
    {"uuid",	1,		"string"},
    {"zdl",	    1,		"int"},
}

--上阵英雄结构体
CombatPosNet = {
	{"pos"	,		1,		"byte"},--坑位序号
	{"bagIndex"	,	1,		"int"},--英雄背包索引
    {"uuid"	,	    1,		"string"},--英雄标识
}
--辅助结构体（援兵，魔兽，神女，神龙）
CombatPosHelpNet = {
	{"type"	,		1,		"byte"},--辅助类型
	{"id"	,		1,		"byte"},--辅助id
	{"icon"	,		1,		"byte"},--辅助图标
}

CombatTypeNet = {
	{"type",	1,		"byte"},--战斗类型
	{"name",	1,		"string"},--战斗类型名字
	{"needLv",  1,      "int"},   -- 布阵所需要等级
    {"isQuickTime",	1,	"string"},      --跳过设置
}

GC_COMBAT_POS_QUERY = {
	{"list",		20,	CombatTypeNet},
	{"formation",	1,	"short"},		  --阵法
	{"heroList",	6,	CombatPosNet},	  --上阵英雄列表
	{"helpList",	6,	CombatPosHelpNet},--辅助对象列表
	{"type",	1,		"byte"},          --战斗类型
    {"mapID",	1,		"short"},         --布阵地图
    {"backUpLock",	1,	"byte"},          --援军是否已解锁
    {"jibanLv",	1,		"short"},         --羁绊所需等级
    {"flag",	1,		"byte"},          --请求标志
    {"teamType",	1,	"byte"},          --阵容共享
    {"moshouLock",	1,	"byte"},          --魔兽开启
    {"moshouSkill",	1,	"string"},        --魔兽开启
    {"totalZdl",	1,	"int"},           --战斗力
}

CG_COMBAT_FORMATION_QUERY = {}
CombatFormationNet = {
	{"id",			1,		"byte"},   -- 阵法id
	{"name",		1,		"string"}, -- 阵法名字
	{"icon",		1,		"int"},	   -- 阵法图标
	{"lv",			1,		"int"},    -- 阵法解锁等级
	{"list",		9,		"byte"},   -- 阵法可用位置
}
GC_COMBAT_FORMATION_QUERY = {
	{"list",	10,	CombatFormationNet},
	{"lv",			1,		"int"},    -- 玩家等级
}

CG_COMBAT_POS_UPDATE = {
	{"type",	1,		"byte"},--阵容类型
	{"formation",	1,	"short"},--阵法
	{"heroList"	,	1,		"string"},--上阵英雄
	{"helpList"	,	1,		"string"},--辅助对象
}

GC_COMBAT_POS_UPDATE = {
	{"type",	1,		"byte"},--阵容类型
    {"teamType",	1,		"byte"},--阵容类型
}

CG_COMBAT_POS_ATTR_QUERY = {
}
CombatPosAttrSubNet = {
	{"cnt",	1,	"byte"},
	{"attrs",	4,	    Attr},
}
CombatPosAttrNet = {
	{"camp",	1,	"byte"},
	{"name",    1,  "string"},   -- 阵营光环名字
	{"list",	5,	CombatPosAttrSubNet},
}
GC_COMBAT_POS_ATTR_QUERY = {
	{"list",	6,	CombatPosAttrNet},--阵营光环属性
	{"attrs",	4,	    Attr},--克制属性
}

-- 设置战斗跳过九零  一 起玩 www.9 01 7  5.com 
CG_COMBAT_SET_QUICK = {
	{"combatType",	1,		"byte"},
	{"isQuick",		1,		"byte"},	
}


-- 战斗开始
CG_COMBAT_BEGIN = {
	{"param",		1,		"string"},
	{"combatType",	1,		"byte"},
}

CombatSkillConf = {
	{"skillID",			1,		"int"},
	{"fireType",		1,		"short"},
	{"readyAction",		1,		"string"},
	{"attackPart",		1,		"string"},
	{"attackAction",	1,		"string"},
	{"readyEffect",		1,		"string"},
	{"attackEffect",	1,		"string"},
	{"hitEffect",		1,		"string"},
	{"flyEffect",		1,		"string"},
	{"flyCoords",       1,      "string"},
	{"quake",		1,		"string"},
	{"hitBack",		1,		"int"},
	{"effectTime",		1,		"short"},
	{"contentType",		1,		"byte"},
	{"content",		1,		"string"},
	{"fireSound",			1,		"int"},
	{"movieEffect",		1,		"byte"},
	{"flySound",			1,		"int"},
	{"hitSound",			1,	"string"},
	{"cvSound",			1,		"int"},
    {"screenMask",			1,	"string"},
    {"screenCam",			1,	"string"},
    {"largeEffect",     1,  "string"},
    {"lie",             1,  "string"},
    {"cuoZhen",		    1,		"short"},
    {"skillDelay",		1,		"short"},
    {"isFraming",		1,		"byte"},
}

CombatCmdConf = {
	{"cmd",			1,		"int"},
	{"hitEffect",		1,		"string"},
	{"hitSound",	1,		"int"},
}

CombatBufferConf = {
	{"bufferID",	1,		"int"},
	{"name",	1,		"string"},
	{"desc",	1,		"string"},
	{"icon",	1,		"string"},
	{"keepEffect",	1,		"string"},
	{"hitEffect",	1,		"string"},
	{"validateEffect",	1,		"string"},
	{"dieEffect",	1,		"string"},
	{"cmd",	1,		"string"},
	{"hitSound",	1,		"int"},
	{"holdOnDie",	1,		"byte"},--死亡是否保留
	{"effectOffset",	1,		"string"},--特效偏移
    {"canAppend",	1,		"byte"},--
    {"appendCnt",	1,		"byte"},--
}

CombatHeroNet = {
	{"pos",			1,		"byte"},	-- 需要跟客户端商定一下，暂定1-6己方 7-12敌方
	{"heroID",		1,		"int"},		-- 英雄id
	{"icon",		1,		"int"},
	{"width"	,	1,		"short"},
	{"height"	,	1,		"short"},
	{"star"	,		1,		"short"},
	{"lv"	,		1,		"short"},	-- 等级
	{"camp",		1,		"byte"},	-- 阵营
	{"name",		1,		"string"},
	{"body",		1,		"int"},		-- 形象
	{"hpMax",		1,		"double"},	-- 最大血量
	{"hpNow",		1,		"double"},	-- 当前血量
	{"size",		1,		"int"},
	{"posX",		1,		"short"},
	{"posY",		1,		"short"},
	{"isBoss",		1,		"byte"},	-- 会加光效，但是代码没实现，迟点看情况加
    {"isGongMing",	1,		"byte"},	-- 是否共鸣
    {"grade",		1,		"byte"},	-- 确定是否是ssr 用于特殊表现
	{"sayList",		20,		"int"},
}

CombatHelpNet = {
	{"pos",			1,		"byte"},
	{"id",		    1,		"int"},
	{"head",		1,		"int"},
	{"body",		1,		"int"},
	{"args",		10,		"int"},		-- 其他参数
    {"skill",		2,		MoshouSkill},		-- 
}

GC_COMBAT_BEGIN = {
	{"isLogin",			1,		"byte"}, -- 是否登录时下发 客户端需要
	{"combatType",		1,		"byte"}, -- 战斗类型
	{"keepTime",		1,		"short"},-- 服务端经过了多少时间
	{"heros",			12,		CombatHeroNet}, 	-- 对战英雄信息(站位)
	{"helps",			10,		CombatHelpNet}, 	-- 对战辅助对象信息(站位)
	{"mapID",			1,		"int"},				-- 战斗场景
	{"skillList",		60,	    CombatSkillConf},	-- 战斗中使用过的技能
	{"cmdList",			16,		CombatCmdConf},	    -- 战斗中使用过的作用
	{"bufferList",		60,	    CombatBufferConf},	-- 战斗中使用过的技能
	{"speed",			1,		"byte"},
	{"attrsAtk",	    10,	     Attr},
	{"attrsDef",	    10,	     Attr},
	{"atkName",		    1,	     "string"},
	{"defName",		    1,	     "string"},
    {"atkUuid",		    1,	     "string"},
	{"defUuid",		    1,	     "string"},
	{"maxRound",		1,		"short"},
    {"isVideo",		    1,		"byte"},
	{"petCD",		    1,		"short"},
	{"atkJibanDesc",	1,		"string"},
	{"defJibanDesc",	1,		"string"},
    {"atkFormation",	1,		"short"},
    {"defFormation",	1,		"short"},
    {"isQuick",	        1,		"byte"},
	{"backup",		2,		"byte"},	--第一个是攻方援军的站位，第二个是守方援军的站位。0值表示援军还没上
}

CombatHitNet = {
	{"pos",			1,		"byte"},
	{"flag",		1,		"byte"},
	{"cmd",			1,		"byte"},
	{"hpNow",		1,	    "double"},
	{"attrs",		10,		Attr},
}

CombatPetNet = {
	{"pos",			1,		"byte"},
}

CombatSkillData = {
	{"attackPos",	1,		"byte"},
	{"skillID",		1,		"int"},	
	{"hitList",		12,		CombatHitNet},	
	{"extraList",		12,		CombatHitNet},
	{"helpList",     12,    CombatPetNet},
}

CombatBufferNet = {
	{"op",			1,		"byte"},--1 添加 2 持续 3 删除
	{"bufferID",	1,		"int"},
	{"cnt",			1,		"short"},
	{"round",		1,		"short"},
	{"hpNow",		1,		"double"},
	{"attrs",		10,		Attr},
}

CombatBufferData = {
	{"pos",			1,		"byte"},
	{"list",		40,		CombatBufferNet},
}

CombatSayData = {
	{"pos",			1,		"byte"},
	{"skillID",		1,		"int"},	
}

CombatFrameNet = {
	{"round",		1,		"byte"},			-- 回合，从1开始
	{"petCD",		1,		"byte"},			-- 魔兽技能cd
	{"skillList",	12,		CombatSkillData},
	{"bufferList",	12,		CombatBufferData},
	{"sayList",		36,		CombatSayData},	--喊话技能列表	
}

GC_COMBAT_FRAME = {
	{"isLogin",			1,		"byte"}, -- 是否登录时下发 客户端需要
	{"isEnd",		1,		"byte"},			-- 是否最后一帧
	{"combatType",	1,		"byte"},			-- 战斗类型	 reyes test
	{"frames",		60,		CombatFrameNet},	-- 战斗过程	
}

CombatResultNet = {
	{"pos",			1,		"byte"},
	{"hurt",		1,		"double"},--输出
	{"hp",			1,		"double"},--治疗
	{"beHurt",      1,		"double"},--承受伤害
	{"bout",        1, 		"int"},--出手回合数
	{"isDie",       1, 		"byte"},
	{"heroID",		1,		"int"},
	{"head",		1,		"int"},
	{"lv",			1,		"short"},
	{"camp",		1,		"byte"},
	{"star",		1,		"byte"},
    {"name",		1,		"string"},
    {"body",		1,		"string"},
    {"grade",       1,      "byte"}, --评级
}

--
CombatFinishData = {
	{"ret",			1,		"byte"},	-- 1 胜利 2 失败
	{"type",		1,		"byte"},	--战斗类型
	{"self",    	1,      RoleBase},
	{"target",		1,		RoleBase},
	{"items",		20,		ItemData},
	{"result",		14,		CombatResultNet},
	{"param",		1,		"string"},
	{"isVideo",		1,		"byte"},
	{"lookType",	1,		"byte"},	--查看途径 0-原始 1-聊天 2-个人记录
	{"panelIDs",	5,		"short"},
    {"isQuick",	    1,		"byte"},
    {"combatTime",	1,		"short"},
	{"double",      1,      "byte"},     -- 是否为福利 双倍
    {"oldLv",		1,		"short"},    -- 历史等级
}


-- 战斗结果
GC_COMBAT_FINISH = {
	{"data",		1,		CombatFinishData},
}

-- 战斗结束，返回记录Uuid
GC_COMBAT_RETURN_RECORD = {
    {"videoUuid",1,"string"},
    {"type",1,"byte"},
}

-- 战斗播放速度 1or2
CG_COMBAT_SPEED = {
	{"speed",		1,	"byte"},
}

GC_COMBAT_SPEED = {
	{"speed",		1,	"byte"},
}



-- 个人战斗记录列表
CG_COMBAT_VIDEO_QUERY = {}
CombatVideoData = {
	{"videoUuid",  	1, 		"string"},	
	{"combatTime", 	1,  	"int"},
	{"isWin", 		1, 		"int"},
	{"type",		1, 		"int"},
    {"atkRoleBase",	1,		RoleBase},
    {"defRoleBase",	1,		RoleBase},
}
GC_COMBAT_VIDEO_QUERY = {
	{"list",   		50, 	CombatVideoData}
}

-- 保存
CG_COMBAT_SAVE_VIDEO = {}

-- 删除
CG_COMBAT_DEL_VIDEO = {
	{"videoUuid",  	1, 	"string"},
}

-- 战斗记录回放 
CG_COMBAT_LOOK_VIDEO = {
	{"videoUuid",  	1, 	"string"},	
	{"lookType",	1,	"byte"},		--查看途径 0-原始 1-聊天 2-个人记录
}

-- 客户端播放战斗过程结束 reyes test
CG_COMBAT_CLIENT_FINISH = {
	{"type",		1,		"byte"},	--战斗类型
}


-- 客户端播放战斗过程的时间设置
CG_COMBAT_CLIENT_PASS_TIME = {
	{"type",		1,		"byte"},	--战斗类型
    {"passTime",    1,		"short"},	    --服务端时间
}


CG_JIBAN_QUERY = {
	{"combatType",	1,		"byte"},
	{"heroID",		1,		"int"},
}

JibanInfoNet = {
	{"id",		1,		"short"},
	{"quality",		1,		"byte"},
	{"name",		1,		"string"},
	{"desc",		1,		"string"},
	{"heroList",		10,		HeroSimple},
}


JibanPosNet = {
	{"id",		1,		"short"},
	{"hero",	1,		HeroSimple},
	{"isOpen",	1,		"byte"},	--0 未解锁 1 已解锁
	{"tip",		1,		"string"},	--提示
    {"sort",	1,		"byte"},	--提示
}

GC_JIBAN_QUERY = {
	{"jibanList",	20,	JibanInfoNet},
	{"posList",	5,	JibanPosNet}
}

GC_JIBAN_QUERY_ALL = {
	{"posList",	5,	JibanPosNet},
    {"type",	1,	"byte"}
}

CG_JIBAN_PREVIEW = {}
GC_JIBAN_PREVIEW = {
	{"list",	40,	JibanInfoNet}
}

CG_JIBAN_UPDATE = {
	{"combatType",	1,		"byte"},
	{"jibanList",	1,		"string"},--羁绊
}
GC_JIBAN_UPDATE = {

}

CG_HERO_UPDATE_ALL_POS = {
    {"uuid",	1,		"string"},
}

GC_HERO_UPDATE_ALL_POS = {
}

CG_HERO_UPDATE_ZDL = {
    {"uuid",	1,		"string"},
}

GC_HERO_UPDATE_ZDL = {
    {"list",	10,		CombatHeroZdl},
}